vim.g.mapleader = " "
vim.g.maplocalleader = " "
local map = vim.api.nvim_set_keymap
-- 复用 opt 参数
local opt = {noremap = true, silent = true }
-- 行的移动
map("n", "gh", "^", opt)
map("n", "gl", "$", opt)
map("v", "gh", "^", opt)
map("v", "gl", "$", opt)
-- 行删除到行首或行
map("n", "dgh", "d^", opt)
map("n", "dgl", "d$", opt)
-- insert模式下的ESC
map("i", "jw", "<ESC>", opt)
-- 取消 s 默认功能
--map("n", "s", "", opt)
-- 在visual模式里粘贴不要复制
map("v", "p", '"_dp', opt)
-- 命令行下 Ctrl+j/k  上一个下一个
--map("c", "<C-j>", "<C-n>", { noremap = false })
--map("c", "<C-k>", "<C-p>", { noremap = false })
------------------------------------------------------------------
-- windows 分屏快捷键
------------------------------------------------------------------
map("n", "sv", ":vsp<CR>", opt)
--map("n", "sh", ":sp<CR>", opt)
-- 关闭当前
--map("n", "sc", "<C-w>c", opt)
-- 关闭其他
--map("n", "so", "<C-w>o", opt) -- close others
-- alt + hjkl  窗口之间跳转
map("n", "<A-h>", "<C-w>h", opt)
--map("n", "<A-j>", "<C-w>j", opt)
--map("n", "<A-k>", "<C-w>k", opt)
map("n", "<A-l>", "<C-w>l", opt)
-- 插入当前日期
map("n", "<F3>", "i<C-R>=strftime(\"%Y-%m-%d\")<CR><Esc>", opt)

-- 插件快捷键
local pluginKeys = {}

-- nvim-tree
-- alt + m 键打开关闭tree
map("n", "<A-m>", ":NvimTreeToggle<CR>", opt)
-- bufferline
-- 左右Tab切换
map("n", "<C-h>", ":BufferLineCyclePrev<CR>", opt)
map("n", "<C-l>", ":BufferLineCycleNext<CR>", opt)
-- 关闭
--"moll/vim-bbye"
map("n", "<C-w>", ":Bdelete!<CR>", opt)
map("n", "<leader>bl", ":BufferLineCloseRight<CR>", opt)
map("n", "<leader>bh", ":BufferLineCloseLeft<CR>", opt)
map("n", "<leader>bc", ":BufferLinePickClose<CR>", opt)

-- 列表快捷键
pluginKeys.nvimTreeList = {
  -- 打开文件或文件夹
  { key = {"<CR>", "o", "<2-LeftMouse>"}, action = "edit" },
  -- 分屏打开文件
  { key = "v", action = "vsplit" },
  { key = "h", action = "split" },
  -- 显示隐藏文件
  { key = "i", action = "toggle_custom" }, -- 对应 filters 中的 custom (node_modules)
  { key = ".", action = "toggle_dotfiles" }, -- Hide (dotfiles)
  -- 文件操作
  { key = "<F5>", action = "refresh" },
  { key = "a", action = "create" },
  { key = "d", action = "remove" },
  { key = "r", action = "rename" },
  { key = "x", action = "cut" },
  { key = "c", action = "copy" },
  { key = "p", action = "paste" },
  { key = "s", action = "system_open" },
}
return pluginKeys

